import vue from '@vitejs/plugin-vue'
// config alias
import path from 'path'
import {ConfigEnv, defineConfig, UserConfigExport} from 'vite'
import ViteComponents, {AntDesignVueResolver} from 'vite-plugin-components'
// Introduce eslint plugin
import eslintPlugin from 'vite-plugin-eslint'
import OptimizationPersist from 'vite-plugin-optimize-persist'
import PkgConfig from 'vite-plugin-package-config'
import viteSvgIcons from 'vite-plugin-svg-icons'
import {viteVConsole} from 'vite-plugin-vconsole'

// https://vitejs.dev/config/
export default ({command, mode}: ConfigEnv): UserConfigExport => defineConfig({
    plugins: [
        vue(),
        eslintPlugin({
            fix: true
        }),
        ViteComponents({
            customComponentResolvers: [AntDesignVueResolver()],
        }),
        viteSvgIcons({
            // 指定需要缓存的图标文件夹
            iconDirs: [path.resolve(process.cwd(), 'src/assets/icons')],
            // 指定symbolId格式
            symbolId: 'icon-[dir]-[name]',
        }),
        viteVConsole({
            entry: path.resolve(__dirname, './src/main.ts'), // 入口文件
            localEnabled: command === 'serve', // serve开发环境下
            // enabled: command !== 'serve' || mode === 'test', // 打包环境下/发布测试包,
            config: { // vconsole 配置项
                maxLogNumber: 1000,
                theme: 'light'
            }
        }),
        PkgConfig(),
        OptimizationPersist()
        // [svgBuilder('./src/assets/icons/')] // All svg under src/icons/svg/ have been imported here, no need to import separately
    ],
    server: {
        open: true,
        host: '0.0.0.0',
        port: 8080
    },
    envDir: './env',
    resolve: {
        alias: [{
            // https://github.com/vitejs/vite/issues/279#issuecomment-635646269
            find: '/@',
            replacement: path.resolve(__dirname, './src'),
        }
        ]
    },
    css: {
        preprocessorOptions: {
            scss: {
                // example : additionalData: `@import "./src/design/styles/variables";`
                // dont need include file extend .scss
                additionalData: '@import "./src/styles/variables";'
            },
        }
    },
    base: '/',
    build: {
        target: ['es2015'], // 最低支持 es2015
        sourcemap: true
    }
})
